package entidades.DAOs;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import entidades.Estado_Fecha;
import entidades.Fecha;
import entidades.DTOs.DTOFecha;

import utilidades.ConexionBD;

public class DAOfechas {
	
	public static void setEstadoFecha(int id_fecha, int id_estado) throws SQLException, ClassNotFoundException{
		
		ConexionBD.conectar();
        Statement sentencia=ConexionBD.conexion.createStatement();
        
        String sentenciaEjecutar = "UPDATE Fecha \n"
        						+ "SET id_est_fecha = "+id_estado+" \n"
        						+ "WHERE "+id_fecha+" = id_fecha;";
                
        sentencia.executeUpdate(sentenciaEjecutar);
        
        ConexionBD.desconectar();
		
	}
	
	public static int getIdFechaVeda() throws SQLException, ClassNotFoundException{
		
		int id_fecha = 0;
		
		ConexionBD.conectar();
        Statement sentencia=ConexionBD.conexion.createStatement();
        
        String sentenciaEjecutar = "SELECT id_fecha \n"
								+ "FROM Fecha \n"
								+ "WHERE id_est_fecha = 3;";
        
        ResultSet resultadoConsulta=sentencia.executeQuery(sentenciaEjecutar);
		
        if(resultadoConsulta.next()){
        	
        	id_fecha = resultadoConsulta.getInt(1);
        	
        }
		return id_fecha;
	}
	
	public static Fecha getFecha(int id_fecha) throws SQLException, ClassNotFoundException{
		
		ConexionBD.conectar();
        Statement sentencia=ConexionBD.conexion.createStatement();
        
        String sentenciaEjecutar ="SELECT * \n"
								+ "FROM Fecha \n"
								+ "WHERE "+id_fecha+" = id_fecha;";
        
        ResultSet resultadoConsulta=sentencia.executeQuery(sentenciaEjecutar);
        
        Fecha fechaElegida = new Fecha();
        if(resultadoConsulta.next()){
        	   fechaElegida.setId_fecha(resultadoConsulta.getInt(1));
        	   fechaElegida.setNumero(resultadoConsulta.getInt(2));
        	   fechaElegida.setId_torneo(resultadoConsulta.getInt(3));
        	   fechaElegida.setFinVeda(resultadoConsulta.getDate(4));
        	   fechaElegida.setInicioVeda(resultadoConsulta.getDate(5));
        	   fechaElegida.setHoraFinVeda(resultadoConsulta.getTime(6));
        	   fechaElegida.setHoraInicioVeda(resultadoConsulta.getTime(7));
        	   fechaElegida.setId_estadoFecha(resultadoConsulta.getInt(8));
        }
        else throw new ClassNotFoundException();
		ConexionBD.desconectar();

        return fechaElegida;
	}

	public static Fecha getUltimaFecha() throws SQLException, ClassNotFoundException {
		// TODO Auto-generated method stub
		
		Fecha fecha = new Fecha();
		ConexionBD.conectar();
		Statement sql = ConexionBD.conexion.createStatement();

		ResultSet rsFecha = sql.executeQuery("SELECT F.finVeda, F.horaFinVeda, F.horainIcioVeda, E.id_est_fecha, E.nombre, F.inicioVeda, F.numero, F.id_fecha   FROM Fecha as F, estadofecha as E \n" 
											+"WHERE J.id_est_fecha = E.id_estado fecha AND "+ "E.id_est_fecha="+Integer.toString(3)+";");//1 abierta, 2 cerrada, 3 veda
		if(rsFecha.next()){

		fecha.setFinVeda(rsFecha.getDate(1));
		fecha.setHoraFinVeda(rsFecha.getTime(2));
		fecha.setHoraInicioVeda(rsFecha.getTime(3));
		Estado_Fecha est = new Estado_Fecha();
		est.setId_est_fecha(rsFecha.getInt(4));
		est.setNombre(rsFecha.getString(5));
		fecha.setEstadoFecha(est);
		fecha.setInicioVeda(rsFecha.getDate(6));
		fecha.setNumero(rsFecha.getInt(7));
		fecha.setId_fecha(rsFecha.getInt(8));

		
		rsFecha.close();
		sql.close();

		 }

		ConexionBD.desconectar();
		
		return fecha;
	}

	
	
	public static Fecha getUltimaFechaAbierta() throws SQLException, ClassNotFoundException {
		// TODO Auto-generated method stub
		
		Fecha fecha = new Fecha();
		ConexionBD.conectar();
		Statement sql = ConexionBD.conexion.createStatement();

		ResultSet rsFecha = sql.executeQuery("SELECT F.finVeda, F.horaFinVeda, F.horainIcioVeda, E.id_est_fecha, E.nombre, F.inicioVeda, F.numero, F.id_fecha   FROM Fecha as F, estadofecha as E \n" 
				+"WHERE F.id_est_fecha = E.id_est_fecha AND "+ "E.id_est_fecha="+Integer.toString(1)+";");//1 abierta, 2 cerrada, 3 veda
if(rsFecha.next()){

fecha.setFinVeda(rsFecha.getDate(1));
fecha.setHoraFinVeda(rsFecha.getTime(2));
fecha.setHoraInicioVeda(rsFecha.getTime(3));
Estado_Fecha est = new Estado_Fecha();
est.setId_est_fecha(rsFecha.getInt(4));
est.setNombre(rsFecha.getString(5));
fecha.setEstadoFecha(est);
fecha.setInicioVeda(rsFecha.getDate(6));
fecha.setNumero(rsFecha.getInt(7));
fecha.setId_fecha(rsFecha.getInt(8));

		
		rsFecha.close();
		sql.close();

		 }

		ConexionBD.desconectar();
		
		return fecha;
	}
	public static boolean ExisteFechaCerrada() throws SQLException, ClassNotFoundException {
		
		
		ConexionBD.conectar();
        Statement sentencia=ConexionBD.conexion.createStatement();
      
        ResultSet resultadoConsulta=sentencia.executeQuery("SELECT * FROM Fecha \n" 
				+"WHERE "+ "id_est_fecha="+Integer.toString(2)+";");
        
        ArrayList <DTOFecha> listaFechas= new ArrayList <DTOFecha>();
        
        while(resultadoConsulta.next()){
        	DTOFecha fecha = new DTOFecha();
        	fecha.setFinVeda(resultadoConsulta.getDate("finVeda"));
    		fecha.setHoraFinVeda(resultadoConsulta.getTime("horaFinVeda"));
    		fecha.setHoraInicioVeda(resultadoConsulta.getTime("horaInicioVeda"));
    		fecha.setId_estadoFecha(resultadoConsulta.getInt("id_est_fecha"));
    		fecha.setId_torneo(resultadoConsulta.getInt("id_torneo"));
    		fecha.setInicioVeda(resultadoConsulta.getDate("inicioVeda"));
    		fecha.setNumero(resultadoConsulta.getInt("numero"));
    		fecha.setId_fecha(resultadoConsulta.getInt("id_fecha"));
        	listaFechas.add(fecha);
        	}
        ConexionBD.desconectar();
        if(listaFechas.size()!=0){
		return true;
        }else{
        return false;
        }
	}

	public static ArrayList<DTOFecha> getFechas()throws SQLException, ClassNotFoundException {
		// TODO Auto-generated method stub
		ConexionBD.conectar();
        Statement sentencia=ConexionBD.conexion.createStatement();
        String sentenciaEjecutar ="SELECT * \n"
        						 +"FROM Fecha ;";
        ResultSet resultadoConsulta=sentencia.executeQuery(sentenciaEjecutar);
        
        ArrayList <DTOFecha> listaFechas= new ArrayList <DTOFecha>();
        
        while(resultadoConsulta.next()){
        	DTOFecha fecha = new DTOFecha();
        	fecha.setFinVeda(resultadoConsulta.getDate("finVeda"));
    		fecha.setHoraFinVeda(resultadoConsulta.getTime("horaFinVeda"));
    		fecha.setHoraInicioVeda(resultadoConsulta.getTime("horaInicioVeda"));
    		fecha.setId_estadoFecha(resultadoConsulta.getInt("id_est_fecha"));
    		fecha.setId_torneo(resultadoConsulta.getInt("id_torneo"));
    		fecha.setInicioVeda(resultadoConsulta.getDate("inicioVeda"));
    		fecha.setNumero(resultadoConsulta.getInt("numero"));
    		fecha.setId_fecha(resultadoConsulta.getInt("id_fecha"));
        	listaFechas.add(fecha);
        	}
        ConexionBD.desconectar();
		return listaFechas;
	}

	

}
